#include <stdio.h>
#include <stdlib.h>

void InputArray(int* array, int num) {
    printf("please input the elements of array:");
    for (int i = 0; i < num; i++)
        scanf("%d", &array[i]);
}

void InsertSort(int* array, int length) {
    for (int i = 0; i < length - 1; ++i) {
        int end = i;
        int tmp = array[end + 1];
        while (end >= 0) {
            // 若第i + 1个位置的元素大于前一个元素，交换元素
            if (tmp > array[end]) {
                array[end + 1] = array[end];
                --end;
            } else {
                // 若没有交换位置，已经有序，跳出当前这个循环
                break;
            }
        }
        // 将之前记录的i + 1个数据，放在end移动到的位置
        array[end + 1] = tmp;
    }
}

void ArrayPrint(int* array, int num) {
    printf("after sorting, the elements are:");
    for (int i = 0; i < num; i++) 
        printf("%d ", array[i]);
    printf("\n");
}

int main() {
    int num = 0;
    printf("please input the number of array:");
    scanf("%d", &num);
    int* array = (int*)malloc(sizeof(int) * num);
    InputArray(array, num);
    InsertSort(array, num);
    ArrayPrint(array, num);
    free(array);
    return 0;
}
